package aerolineasYVuelos

import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.Id
import javax.persistence.OneToMany
import primeraEntregaMain.Usuario
import servicios.ServicioTramo
import servicios.ServicioAsiento
import javax.persistence.GenerationType
import javax.persistence.CascadeType
import javax.persistence.ManyToOne
import scala.collection.JavaConverters._
import scala.collection.JavaConversions._
import org.joda.time.DateTime

@Entity
class Vuelo {
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	var id: Int = _
	def getId = id
    def setId(i: Int) { id = i }
	
	@OneToMany(cascade = Array(CascadeType.ALL))
	var tramos: java.util.List[Tramo] = new java.util.ArrayList[Tramo]
	def getTramos = tramos
	def setTramos(t: java.util.List[Tramo]) { tramos = t }
	
	@ManyToOne
	var aerolinea: Aerolinea = _
	def getAerolinea = aerolinea
	def setAerolinea(unaAerolinea: Aerolinea) { aerolinea = unaAerolinea }
	
	var precioVuelo: Int = 0
	def getPrecioVuelo = precioVuelo
	def setPrecioVuelo(precio: Int) { precioVuelo = precio }
	
	var duracionVuelo: Int = 0
	def getDuracionVuelo = duracionVuelo
	def setDuracionVuelo(duracion: Int) { duracionVuelo = duracion }
	
	def esDirecto: Boolean = {
	  this.tramos.size == 1 
	}
	
	def agregarTramo(tramo: Tramo) {
		getTramos += tramo
		var creadorDeDuracion = new CreadorDeDuracion
		setDuracionVuelo(creadorDeDuracion.duracionDeVuelo(getTramos.head.getHoraSalida, getTramos.last.getHoraLlegada))
		setPrecioVuelo(getPrecioVuelo + tramo.getPrecioBase)
	}
	
	def consultarAsientosLibresA(unTramo: Tramo) {
		unTramo.consultarAsientosLibres
	}

}